Technical Field
The present invention relates to system virtualization and, more particularly, to agile virtual machine load balancing.
Description of the Related Art
Virtualization is evolving as a key consolidation technology and is part of the foundation of cloud computing. The ability to create and manage virtual machines (VMs) has become a necessity for data center management. Cloud providers typically use these techniques to consolidate multiple applications or VMs onto a single node to minimize their costs and to take maximum advantage of virtualization. At the same time, cloud consumers expect VMs to obey desired service level agreements (SLAs) to satisfy their own clients' needs. SLAs typically include performance SLAs in addition to others, such as availability, security, etc. This in turn means that providers provision resources to the VMs to handle varying loads, including peak loads. However, load variation on the application cannot generally be known beforehand. If resources are provisioned to handle a certain amount of load, then VM performance may degrade during peak loads, thus violating the promised SLAs.
One solution to this problem has been to over-provision resources to the VMs, by providing enough extra resources to the VM to handle peak loads. This approach has a drawback in that the resources in the system are under-utilized except when they are at peak load, which results in a higher cost to providers, which need to use more physical resources to provide the resources to the over-provisioned VMs. Another conventional solution is to migrate secondary VMs to a different machine when one VM on the same node reaches peak loads. However, migrating a VM may need significant resources and time and may even degrade the performance of the VM that is at peak load if resources such as processing and network resources are used for migration.